Companies, universities, governments, and other operators of large-scale network services implement many different types of architectures and methods to balance the burden of network services across their physical hardware resources. For example, these entities have used techniques such as global server load balancing (“GSLB”), route health injection (“RHI”), and/or expensive network device redundancy. Various embodiments of these technologies are sometimes referred to as “high availability,” “high reliability,” and “load balancing,” any of which may typically involve techniques such as round robin DNS (domain name server) routing, scheduling algorithms, etc. All of these technologies are often relatively expensive, in terms of equipment and/or operational complexity, and create a relatively poor user experience when changes or problems occur in one or more network resources or flows.
One useful technique for load balancing or distributing involves a technology referred to as software defined networking (“SDN”). Software defined networking is an approach that allows network administrators to manage network services through abstraction of lower level functionality, such as by decoupling the system that makes traffic control decisions (e.g., the “control plane”) from the underlying systems that forwards traffic to the selected destination (e.g., the “data plane”). One mechanism for enabling software defined networking is the Open Flow protocol, which is promoted by the Open Networking Foundation. OpenFlow is a communications protocol that gives access to the forwarding plane of a network switch or router over the network. In other words, OpenFlow allows the path of network packets through the network of switches to be determined programmatically by software using arbitrary criteria. The separation of the control from the forwarding allows for more sophisticated traffic management than is feasible using access control lists (ACLs) and routing protocols. The basic function of OpenFlow is to give external software direct access to program a switch's forwarding table. An OpenFlow switch may talk to a controller, which can send flows that match a set of fields and specify actions to be taken; request configuration, state, and statistical information; receive packets punted by the switch; and send packets out to the switch to be transmitted.
However, using existing techniques for software defined networking and OpenFlow, when a client flow enters the network and there are multiple targets using the same network address, traditional routing techniques will send the traffic to the closest target. If the client flow changes the entry point due to network reconvergence or a user's network path changing, the flow will be sent to a different target that will then reject the session. As a result, a different address is needed for each target, and GSLB must be used to distribute traffic among the targets. Such methods are non-deterministic and rely on expensive device level redundancy to ensure availability. Furthermore, shifting traffic between targets may cause delays perceived by client devices.
Accordingly, a need exists for systems and methods for improved data transmission between network connected devices. More specifically, a need exists for systems and methods for controlled distribution of network flows by performing variations of software defined networking (“SDN”) based on elements in the client packet, between devices over the Internet.